<?php


class Enviar_arquivos extends MY_Controller {
  public function index()
  {
    $data['title'] = "SisCaD-TP - Envio de arquivos";
    $data['pagina'] = "enviar_arquivos";
    $this->load->model('funcionario_model');
    $data['funcionario'] = $this->funcionario_model->montaSelect();
    $data['menu'] = $this->montaMenu();
    $this->load->view('templates/header',$data);
    $this->load->view('pages/selecionarArquivos',$data);
    $this->load->view('templates/footer');

  }
  
  public function enviar(){
    $dados = substr($_POST['dados'],0,-1);
    $dados = explode('|',$dados);
    $this->load->helper('file');
    $data = 'teste';
    $geracao = date("YmdHi");
    $caminho = "arquivos/".date("YmdHis");
    mkdir($caminho);
    $this->load->library('email');
    $this->email->clear();
    $this->email->from('transparencia@casemg.com.br','Casemg - Transparencia');
    $this->email->to('hudsoncalado@hcsites.com.br, leandro@casemg.com.br,camilo@casemg.com.br,hudson.calado@yahoo.com.br');
    //$this->email->to('transparencia.contato@cgu.gov.br,camilo@casemg.com.br');
    foreach($dados as $dado){
      switch ($dado):
	case 'licitacao':
	  $this->db->select('data');
	  $this->db->from('controle_licita');
	  $this->db->order_by('data','desc');
	  $this->db->limit('1');
	  $a = $this->db->get();
	  $ultima = $a->result();
	  
		  
	  $this->db->select("
	    licitacao.codigo_orgao_superior as orgao_superior ,
	    licitacao.cod_orgao as cod_orgao ,
	    licitacao.tipo_orgao as tipo_orgao ,
	    licitacao.uasg as uasg ,
	    modalidade.codigo as modalidade ,
	    licitacao.numero as numero ,
	    licitacao.ano as ano ,
	    licitacao.processo as processo ,
	    licitacao.objeto as objeto ,
	    licitacao.data_abertura as data_abertura ,
	    licitacao.hora_abertura as hora_abertura ,
	    licitacao.local as local ,
	    municipio.codigo as municipio ,
	    estado.sigla as uf ,
	    licitacao.data_publicacao as data_publicacao ,
	    situacao.valor as situacao ,
	    licitacao.responsavel as responsavel");
	  $this->db->from('licitacao');
	  $this->db->join("modalidade","licitacao.modalidade = modalidade.id");
	  $this->db->join("estado","licitacao.uf = estado.id");
	  $this->db->join("municipio","licitacao.municipio = municipio.id");
	  $this->db->join("situacao","licitacao.situacao = situacao.id");
	  $this->db->where("data_gravacao > '{$ultima[0]->data}'");
	  $this->db->order_by('data_publicacao');
	  $a = $this->db->get();
	  if($a->num_rows() >0){
	    $reg[$dado] = $a->num_rows();
	    $path = $caminho."/LC00009251853".$geracao.".txt";
	    $i = 0;
	    $soma[$dado] = 0;
	    foreach($a->result() as $row){
	      if($i == 0){
		$antigo[$dado] = $this->tiraCaracter($row->data_publicacao);
		$arquivo[$dado] = $path;
	      }
	      $str = '';
	      $str .= str_pad($row->orgao_superior, 5, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->cod_orgao, 10, 0, STR_PAD_LEFT );
	      $str .= $row->tipo_orgao;
	      $str .= str_pad($row->uasg, 6, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->modalidade, 2, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->numero, 10, 0, STR_PAD_LEFT );
	      $str .= $row->ano;
	      $str .= str_pad($row->processo, 25, ' ');
	      $str .= str_pad($row->objeto, 1000, ' ');
	      $str .= $this->tiraCaracter($row->data_abertura);
	      $str .= $this->tiraCaracter($row->hora_abertura);
	      $str .= str_pad($row->local, 100, ' ');
	      $str .= str_pad($row->municipio, 4, 0, STR_PAD_LEFT );
	      $str .= $row->uf;
	      $str .= $this->tiraCaracter($row->data_publicacao);
	      $str .= str_pad($row->situacao, 20, ' ');
	      $str .= str_pad($row->responsavel, 80, ' ');
	      $str.= $geracao;
	      $total = 0;
	      write_file($path, $str, 'a+');
	      write_file($path, "\n", 'a+',1);
	      $i++;
	    }
	    $recente[$dado] = $this->tiraCaracter($row->data_publicacao);
	    $this->email->attach($path);
	    
	  }
	  break;
	case 'item_licitacao':
	  $this->db->select('data');
	  $this->db->from('controle_licita');
	  $this->db->order_by('data','desc');
	  $this->db->limit('1');
	  $a = $this->db->get();
	  $ultima = $a->result();
	  
		  
	  $this->db->select("
	    item_licitacao.codigo_orgao as cod_orgao ,
	    item_licitacao.tipo_orgao as tipo_orgao ,
	    item_licitacao.uasg as uasg ,
	    modalidade.codigo as modalidade ,
	    licitacao.numero as numero_licita ,
	    licitacao.ano as ano_licita ,
	    item_licitacao.numero_item as numero ,
	    item_licitacao.descricao as descricao ,
	    item_licitacao.quantidade as quantidade ,
	    item_licitacao.valor as valor ,
	    item_licitacao.cnpj_vencedor as cnpj_vencedor ,
	    item_licitacao.razao_social_vencedor as razao_social_vencedor ,
	    licitacao.data_publicacao as data_publicacao");
	  $this->db->from('item_licitacao');
	  $this->db->join("licitacao","item_licitacao.licitacao = licitacao.id");
	  $this->db->join("modalidade","licitacao.modalidade = modalidade.id");
	  $this->db->order_by('data_publicacao');
	  $this->db->where("item_licitacao.data_gravacao > '{$ultima[0]->data}'");
	  $a = $this->db->get();
	  $i = 0;
	  if($a->num_rows() >0){
	    $reg[$dado] = $a->num_rows();
	    $path = $caminho."/LI00009251853".$geracao.".txt";
	    $soma[$dado] = 0;
	    foreach($a->result() as $row){
	      if($i == 0){
		$antigo[$dado] = $this->tiraCaracter($row->data_publicacao);
		$arquivo[$dado] = $path;
	      }
	      $str = '';
	      $str .= str_pad($row->cod_orgao, 10, 0, STR_PAD_LEFT );
	      $str .= $row->tipo_orgao;
	      $str .= str_pad($row->uasg, 6, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->modalidade, 2, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->numero_licita, 10, 0, STR_PAD_LEFT );
	      $str .= $row->ano_licita;
	      $str .= str_pad($row->numero, 5, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->descricao, 500, ' ');
	      $str .= str_pad($this->tiraCaracter($row->quantidade),10, 0, STR_PAD_LEFT);
	      $str .= str_pad($this->tiraCaracter($row->valor),19, 0, STR_PAD_LEFT);
	      $str .= str_pad($this->tiraCaracter($row->cnpj_vencedor),14, 0, STR_PAD_LEFT);
	      $str .= str_pad($row->razao_social_vencedor, 80, ' ');
	      $str.= $geracao;
	      $soma[$dado] += $this->tiraCaracter($row->valor);
	      write_file($path, $str, 'a+');
	      write_file($path, "\n", 'a+',1);
	      $i++;
	    }
	    $recente[$dado] = $this->tiraCaracter($row->data_publicacao);
	    $this->email->attach($path);
	    
	  }
	  break;
	case 'contrato':
	  $this->db->select('data');
	  $this->db->from('controle_contrato');
	  $this->db->order_by('data','desc');
	  $this->db->limit('1');
	  $a = $this->db->get();
	  $ultima = $a->result();
	  
	  $this->db->select("
	    contrato.orgao_superior as orgao_superior,
	    contrato.codigo_orgao as codigo_orgao,
	    contrato.tipo_orgao as tipo_orgao,
	    contrato.uasg_licitacao as uasg_licitacao,
	    contrato.uasg_contrato as uasg_contrato,
	    modalidade.descricao as modalidade,
	    licitacao.numero as numero_licita,
	    licitacao.ano as ano_licita,
	    licitacao.responsavel as responsavel,
	    contrato.numero as numero,
	    contrato.ano as ano,
	    contrato.data_publicacao as data_publicacao,
	    licitacao.processo as processo,
	    item_licitacao.cnpj_vencedor as cnpj_vencedor,
	    item_licitacao.razao_social_vencedor as nome_vencedor,
	    contrato.objeto as objeto,
	    contrato.fundamentacao as fundamentacao,
	    contrato.inicio as inicio,
	    contrato.termino as termino,
	    item_licitacao.valor as valor,
	    situacao_contrato.situacao as situacao,
	    aditivo.uasg_aditivo as uasg_aditivo,
	    aditivo.id as tipo,
	    aditivo.numero as num_aditivo,
	    aditivo.data_publicacao as publicacao_aditivo,
	    aditivo.valor as valor_aditivo
	  ");
	  $this->db->from("contrato");
	  $this->db->join('aditivo','aditivo.contrato = contrato.id','LEFT');
	  $this->db->join('item_licitacao','contrato.item_licitacao = item_licitacao.id');
	  $this->db->join('licitacao','item_licitacao.licitacao = licitacao.id');
	  $this->db->join('modalidade','licitacao.modalidade = modalidade.id');
	  $this->db->join('situacao_contrato','contrato.situacao_contrato = situacao_contrato.id');
	  $this->db->order_by('data_publicacao');
	  $where = "contrato.ultima_alteracao > '{$ultima[0]->data}' or aditivo.ultima_alteracao > '{$ultima[0]->data}'";
	  $this->db->where($where);
	  $a = $this->db->get();
	  $i = 0;
	  if($a->num_rows() >0){
	    $reg[$dado] = $a->num_rows();
	    $path = $caminho."/CT00009251853".$geracao.".txt";
	    $soma[$dado] = 0;
	    foreach($a->result() as $row){
	      if($i == 0){
		$antigo[$dado] = $this->tiraCaracter($row->data_publicacao);
		$arquivo[$dado] = $path;
	      }
	      $str = '';
	      $str .= str_pad($row->orgao_superior, 5, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->codigo_orgao, 10, 0, STR_PAD_LEFT );
	      $str .= $row->tipo_orgao;
	      $str .= str_pad($row->uasg_licitacao, 6, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->modalidade, 2, 0, STR_PAD_LEFT );
	      $str .= str_pad($this->tiraCaracter($row->numero_licita.$row->ano_licita), 14, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->responsavel, 80, ' ');
	      $str .= str_pad($row->uasg_contrato, 6, 0, STR_PAD_LEFT );
	      $str .= '50';
	      $str .= str_pad($this->tiraCaracter($row->numero.$row->ano), 14, 0, STR_PAD_LEFT );
	      $str .= $this->tiraCaracter($row->data_publicacao);
	      $str .= str_pad($row->processo, 25, 0, STR_PAD_LEFT );
	      $str .= str_pad($this->tiraCaracter($row->cnpj_vencedor), 4, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->nome_vencedor, 80, ' ');
	      $str .= str_pad($row->objeto, 1000, ' ');
	      $str .= str_pad($row->fundamentacao, 150, ' ');
	      $str .= $this->tiraCaracter($row->inicio);
	      $str .= $this->tiraCaracter($row->termino);
	      $str .= str_pad($row->situacao, 10, ' ' );
	      $str .= is_null($row->uasg_aditivo)?'000000':str_pad($row->uasg_aditivo, 6, 0, STR_PAD_LEFT );
	      $str .= is_null($row->tipo)?'00':'55';
	      $str .= is_null($row->num_aditivo)?'00000000000000': str_pad($this->tiraCaracter($row->num_aditivo), 14, 0, STR_PAD_LEFT );
	      $str .= is_null($row->publicacao_aditivo)?'00000000': $this->tiraCaracter($row->publicacao_aditivo);
	      $str .= is_null($row->valor_aditivo)?'0000000000000000000':str_pad($this->tiraCaracter($row->valor_aditivo), 19, 0, STR_PAD_LEFT );
	      $str.= $geracao;
	      $soma[$dado] += $this->tiraCaracter($row->valor);
	      write_file($path, $str, 'a+');
	      write_file($path, "\n", 'a+',1);
	      $i++;
	    }
	    $recente[$dado] = $this->tiraCaracter($row->data_publicacao);
	    $this->email->attach($path);
	    
	  }
	  break;
	case 'viagem':
	  $this->db->select('data');
	  $this->db->from('controle_viagem');
	  $this->db->order_by('data','desc');
	  $this->db->limit('1');
	  $a = $this->db->get();
	  $ultima = $a->result();
	  
		  
	  $this->db->select("
	    viagem.id as cod_viagem,
	    viagem.codigo_orgao as cod_orgao,
	    viagem.tipo_orgao as tipo_orgao,
	    viagem.unidade_gestora as uasg,
	    viagem.orgao_superior as orgao_superior,
	    funcionario.cpf as cpf,
	    funcionario.nome as nome,
	    cargos.codigo as cargo,
	    viagem.motivo as motivo,
	    trecho.data_partida as data_partida,
	    trecho.hora_partida as hora_partida,
	    trecho.pais_origem as pais_origem,
	    trecho.uf_origem as uf_origem,
	    trecho.municipio_origem as municipio_origem,
	    trecho.data_chegada as data_chegada,
	    trecho.hora_chegada as hora_chegada,
	    trecho.pais_destino as pais_destino,
	    trecho.uf_destino as uf_destino,
	    trecho.municipio_destino as municipio_destino,
	    meio_transporte.codigo as meio_transporte,
	    classe_passagem.codigo as classe_passagem,
	    trecho.valor_passagem_trecho as valor_passagem,
	    trecho.diarias as diarias,
	    trecho.valor_total_diarias as valor_diarias,
	    viagem.valor_total_viagem as valor_viagem,
	    viagem.valor_acrescimos_deducoes as outros,
      trecho.ultima_alteracao as ultima_alteracao
	  ");
	  $this->db->from("
	    viagem,
	    trecho,
	    meio_transporte,
	    classe_passagem,
	    funcionario,
	    cargos
	    ");
	  $this->db->order_by('trecho.data_partida,trecho.hora_partida');
	  $where = "viagem.funcionario = funcionario.id ";
	  $where .= "and trecho.viagem = viagem.id ";
	  $where .= "and trecho.meio_transporte = meio_transporte.id ";
	  $where .= "and trecho.categoria_passagem = classe_passagem.id ";
	  $where .= "and funcionario.cargo = cargos.id ";
	  $where .= "and (( viagem.ultima_alteracao > '{$ultima[0]->data}') or (trecho.ultima_alteracao > '{$ultima[0]->data}'))";
	  $this->db->where($where);
	  $a = $this->db->get();
	  $i = 0;
	  if($a->num_rows() >0){
	    $this->load->model('pais_model');
	    $this->load->model('estado_model');
	    $this->load->model('municipio_model');
	    $reg[$dado] = $a->num_rows();
	    $path = $caminho."/DP00009251853".$geracao.".txt";
	    $soma[$dado] = 0;
	    foreach($a->result() as $row){
	      if($i == 0){
			$antigo[$dado] = $this->tiraCaracter($row->data_partida.$row->hora_partida);
			$arquivo[$dado] = $path;
	      }
	      $str = '';
	      $str .= str_pad($row->cod_viagem, 10, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->cod_orgao, 10, 0, STR_PAD_LEFT );
	      $str .= $row->tipo_orgao;
	      $str .= str_pad($row->uasg, 6, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->orgao_superior, 6, 0, STR_PAD_LEFT );
	      $str .= str_pad($this->tiraCaracter($row->cpf), 11, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->nome, 80,' ', STR_PAD_LEFT );
	      $str .= str_pad($row->cargo, 4, 0, STR_PAD_LEFT );
	      $str .= $this->tiraCaracter($row->data_partida.$row->hora_partida);
	      $str .= $this->tiraCaracter($row->data_chegada.$row->hora_chegada);
	      $str .= str_pad($this->pais_model->get_codigo($row->pais_origem), 3, 0, STR_PAD_LEFT );
	      $str .= $this->estado_model->get_sigla($row->uf_origem);
	      $str .= str_pad($this->municipio_model->get_codigo($row->municipio_origem), 4, 0, STR_PAD_LEFT );
	      $str .= str_pad($this->pais_model->get_codigo($row->pais_destino), 3, 0, STR_PAD_LEFT );
	      $str .= $this->estado_model->get_sigla($row->uf_destino);
	      $str .= str_pad($this->municipio_model->get_codigo($row->municipio_destino), 4, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->meio_transporte, 4, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->classe_passagem, 1, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->valor_passagem, 19, 0, STR_PAD_LEFT );
	      $str .= str_pad($row->motivo, 3000, ' ');
	      $str .= str_pad($row->diarias, 19, 0, STR_PAD_LEFT );
	      $str .= str_pad($this->tiraCaracter($row->valor_diarias), 19, 0, STR_PAD_LEFT );
	      $str .= str_pad($this->tiraCaracter($row->valor_viagem),19, 0, STR_PAD_LEFT);
	      $str .= str_pad($this->tiraCaracter($row->outros),19, 0, STR_PAD_LEFT);
	      $str.= str_replace(' ', '', $this->tiraCaracter($row->ultima_alteracao));
	      $soma[$dado] += $this->tiraCaracter($row->valor_viagem);
	      write_file($path, $str, 'a+');
	      write_file($path, "\n", 'a+',1);
	      $i++;
	    }
	    $recente[$dado] = $this->tiraCaracter($row->data_partida);
	    $this->email->attach($path);
	    
	  }
	  break;
      endswitch;
    
    }
	if (isset($arquivo))
	{   
    	$path = $caminho."/CONTCASEMG3".$geracao.count($arquivo).".txt";
	
		foreach ($arquivo as $k=>$v){
		  if(isset($reg[$k])){
		$arq = explode('/', $arquivo[$k]);
		$str = '';
		$str .= $arq[2];
		$str .= $antigo[$k];
		$str .= $recente[$k];
		$str .= str_pad($reg[$k], 7, 0, STR_PAD_LEFT );;
		$str .= str_pad($soma[$k], 19, 0, STR_PAD_LEFT );
		write_file($path, $str, 'a+');
		write_file($path, "\n", 'a+',1);

		  }
		}
		$this->email->attach($path);
		$this->email->reply_to('camilo@casemg.com.br');
		$this->email->subject('[SisCaD-TP] dados para o portal de transparencia');
		$this->email->message('
Código do Órgão: 925185 - Tipo do Órgão: 3 - CASEMG

À
Equipe de Suporte das Páginas de Transparência.

Encaminhamos os arquivos para divulgação na Página de Transparência.

Favor verificar se os lançamentos estão corretos e nos comunicar.

Atenciosamente,

Camilo de Lélis Greco Michelini

ASPLA – Assessoria de Planejamento

E-mail: camilo@casemg.com.br
CASEMG - Companhia de Armazéns e Silos do Estado de Minas Gerais
Rua dos Timbiras, 1754, 14º andar, Lourdes, CEP 30140-061 - Belo Horizonte - MG
Tel.: (31) 3272-2842 – Fax (31) 3272-2943
');
		if ($this->email->send())
		 echo 'Arquivo Enviado!';
		else
		  echo "erro|Arquivo nao enviado";
	}
	else{
		echo "erro| Não há dados para envio.";
	}
  }

}
?>
